package com.agile.leetcode.collection;


import org.junit.Test;

import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @Author:ChenZhangKun
 * @Date: 2021/12/17 15:28
 */
public class ListDistinct {
    private static List<Integer> list;

    static {
        // 初始化集合
        list = Arrays.asList(1, 2, 2, 3, 3, 4, 5, 5);
    }

    /**
     * linkedHashSet 是到目前为止，实现比较简单，且最终生成的新集合与原集合顺序保持一致的实现方法，是我们可以考虑使用的一种去重方法
     */
    @Test
    public void fun_1() {
        LinkedHashSet<Integer> linkedHashSet = new LinkedHashSet<>(list);
        // [1, 2, 3, 4, 5]顺序保持一致
        System.out.println(linkedHashSet);
    }

    /**
     * [1, 2, 3, 4, 5]
     * Stream 实现去重功能和其他方法不同的是，它不用新创建集合，使用自身接收一个去重的结果就可以了，并且实现代码也很简洁，
     * 并且去重后的集合顺序也和原集合的顺序保持一致，是我们最优先考虑的去重方法。
     */
    @Test
    public void fun_2() {
        list = list.stream().distinct().collect(Collectors.toList());
        // [1, 2, 3, 4, 5]有序
        System.out.println(list);
    }
}
